﻿/**
 *
 * @file FITKPhyscisPropertyRibbed.h
 * @brief 加筋板类定义
 * @author LiBaojun (libaojunqd@foxmail.com)
 * @date 2024-10-18
 *
 */
#ifndef PHYSCIS_PROPERTY_RIBBED_H_
#define PHYSCIS_PROPERTY_RIBBED_H_

#include "FITKAcousticsAbsShellPhysicsProp.h"
#include "FITKAcousticsPhysicsAPI.h"

namespace Acoustics
{

    class FITKPhyscisPropertyRibInfo;
/**
        * @brief 加筋板数据结构定义
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-10-15
        */
    class FITKAcousticsPhysicsAPI FITKPhyscisPropertyRibbed : public FITKAcousticsAbsShellPhysicsProp
    {
        FITKCLASS(Acoustics, FITKPhyscisPropertyRibbed);
        Q_OBJECT
    public:
        explicit FITKPhyscisPropertyRibbed();
        virtual ~FITKPhyscisPropertyRibbed();
        /**
        * @brief 获取类型
        * @return AcousticsPhyscisPropType 类型
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-10-15
        */
        AcousticsPhyscisPropType getPhysicsPropType() override;
        /**
         * @brief 获取加筋板角度
         * @return baseAngle 加筋板角度
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-10-15
         */
        double getBaseAngle() const;
        /**
         * @brief 设置加筋板角度
         * @param[i] double 加筋板角度
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-10-15
         */
        void setBaseAngle(double baseAngle);

        /**
         * @brief 设置基板属性ID
         * @param[i]  id            基本属性id
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        void setSkinPropID(const int id);
        /**
         * @brief 获取基板属性ID
         * @return int 基板属性ID
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        int getSkinPropID();
        /**
         * @brief 获取基板属性对象
         * @return FITKAcousticsAbsPhysicsProp* 基板属性对象
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        FITKAcousticsAbsPhysicsProp* getSkinPropObj();
        /**
         * @brief 判断是否有第二条筋
         * @return bool true:有第二条筋，false:无第二条筋
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        bool isDir2Enabled();
        /**
         * @brief 获取第一条筋信息
         * @return PhyscisPropertyRibInfo* 第一条筋信息
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        FITKPhyscisPropertyRibInfo* getDri1RibInfo();
        /**
         * @brief 获取第二条筋信息
         * @return PhyscisPropertyRibInfo* 第二条筋信息
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-24
         */
        FITKPhyscisPropertyRibInfo* getDri2RibInfo();
        /**
         * @brief    获取板物理属性的总体厚度抽象接口
         * @return   double
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-12
         */
        virtual double getShellThickness() override;
        /**
         * @brief    更新默认颜色
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-01-20
         */
        virtual void updateDefaultColor() override;

        /**
      * @brief 数据是否被使用（关联）
      * @param[i]  data           被检查的数据ID
      * @return true              管理器中使用了Data中包含的数据
      * @return false             管理器中没有使用Data中包含的数据
      * @author libaojun (libaojunqd@foxmail.com)
      * @date 2025-02-08
      */
        virtual bool isUsedDataObject(const QList<int> & dataIDs) override;

    private:
        /**
         * @brief  加筋板角度
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date   2024-10-15
         */
        double _baseAngle { 0 };
        
        /**
         * @brief  基层板属性名称
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date   2024-10-15
         */
        int _skinPropID{ -1 };
        /**
         * @brief  第一条筋信息
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date   2024-10-15
         */
        FITKPhyscisPropertyRibInfo* _ribInfo1{};
        /**
         * @brief  第二条筋信息
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date   2024-10-15
         */
        FITKPhyscisPropertyRibInfo* _ribInfo2{};

    };
}
#endif // FITKPHYSCISPROPERTYRIBBED_H
